Practical Software Engineering Strategies for Scientific Computing
نویسنده
چکیده
Software engineering is a formal set of tools and procedures for the efficient development of reliable software. Scientific computing software differs from other types of software because the “correct” outputs for a given set of software inputs are generally not known. Since scientific computing relies on approximate numerical solutions to partial differential or integral equations, the answers produced by the software will depend on the mesh employed, the time step chosen, the iterative convergence tolerance used, the number of significant figures used in the floating point computations, etc. The goal of this paper is to provide a broad overview of modern software engineering practices, with a focus on tools and methods that are particularly relevant to scientific computing. Specific topics that are emphasized include software development models, choice of programming language, version control systems, static analysis tools, dynamic testing procedures, and the quantitative assessment of software quality and reliability.
منابع مشابه
A component-based framework for radio-astronomical imaging software systems
This paper describes a component-based framework for radio-astronomical imaging software systems. We consider optimal re-use strategies for packages of disparate architectures brought together within a modern component framework. In this practical case study, the legacy codes include both procedural and objectoriented architectures. We consider also the special requirements on scientific compon...
متن کاملPopper: Making Reproducible Systems Performance Evaluation Practical
Independent validation of experimental results in the field of parallel and distributed systems research is a challenging task, mainly due to changes and differences in software and hardware in computational environments. Recreating an environment that resembles the original systems research is difficult and time-consuming. In this paper we introduce the Popper Convention, a set of principles f...
متن کاملIntegrating Large-scale Distributed and Parallel HPC (DPHPC) Applications Using a Component-Based Architecture
Component-based software engineering (CBSE) is now a widely accepted paradigm for developing large-scale commercial software. The Common Component Architecture (CCA) and its associated Babel tool suite are designed to enable CBSE for High Performance Computing (HPC) scientific applications. Many scientific applications have adopted the CBSE paradigm and demonstrated its effectiveness using CCA....
متن کاملMachine Code and Metaphysics: A Perspective on Software Engineering
A major, but too-little-considered problem for Software Engineering (SE) is a lack of consensus concerning Computer Science (CS) and how this relates to developing unpredictable computing technology. We consider some implications for SE of computer systems differing scientific basis, exemplified with the International Standard Organisations Open Systems Interconnection (ISO-OSI) layered archite...
متن کاملScientific Software Testing: A Practical Example
Scientific applications perform numerical simulations of different natural phenomena in the filed of computational physics and chemistry, mathematics, informatics, mechanics, bioinformatics, etc. They are primarily developed for the scientific research community and usually they are used for simulating some I/O and data extensive experiments [Segal 2005]. The performance of such simulation expe...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2009